The present invention relates to self testing in a complex data processing system such as a multiprocessor computer system. It is typical within such complex data processing systems to provide a measure of self testing in order to enable quick detection and location of any faults within the data processing system. It is typical within such self testing systems to provide a self test program written in the native language of the central processing unit of the computer. This central processing unit then recalls and executes this program in order to provide the test functions.
There are several design trends which make continued reliance upon this single test program written in the native code of the single processing unit disadvantageous. Firstly, the construction of such computer systems is becoming increasingly modular. That is, a base system is provided having a number of slots for receiving plug-in circuit boards. Then the user assembles a system by selecting a desired set of plug-in circuit boards from among a selection of differing types of circuit boards. This type of construction puts a design constraint on the individual circuit boards that they may operate in a variety of differing configurations with differing additional circuit boards. In addition, it is considered convenient for the user to be able to insert any board within any one of the plug-in slots. Secondly, a further design trend is toward the use of more than one processor unit. Multiprocessor systems are employed to provide greater computing power through concurrent processing or through special purpose processing. Although microprocessor units do come in "families" which share the same native language, it is often desirable to include microprocessors in a single system from differing "families". In such a case, in accordance with the prior art, it is necessary to choose a single microprocessor native language and write the data processing test program in that language. This situation is considered less than ideal because, although an additional microprocessor may be available even when the primary microprocessor fails, it is not possible for the secondary microprocessors which do not execute the native code in which the test program is written to perform these system tests. Thus, while processing capability is available to both perform these tests and perhaps to perform some normal operating functions, the system is inoperable due to the incompatibility of the native languages of the microprocessors.
In many such complex data processing systems, there will be at least some circuit boards which cannot perform their own self test. Such things as random access memory boards are not normally provided with self test capability. It would be advantageous to provide on such nonintelligent data processing circuits a program for testing this circuit board which can be executed by an intelligent data processing circuit elsewhere in the system. In a computer system which is modular and permits microprocessors with differing native languages, in accordance with the prior art, a design choice must be made as to which native language to employ in the test program for this nonintelligent data processing circuit. Alternately, the test program may be provided in each of the native languages of the permitted microprocessors of the system. Either of these choices includes the possibility of enabling a new microprocessor having a differing native language to run the tests of prior nonintelligent circuits.